草庐IT

c++ - 复制对象时的虚拟表

全部标签

我可以覆盖用 C 编写的 Ruby 方法吗?

是否可以使用Ruby代码覆盖Ruby本身的一部分方法,例如rb_error_frozen,它们是用C语言编写的?背景:我想知道当卡住的对象被修改时,是否有可能让Ruby仅记录警告,而不引发异常。这样,我可以记录各种状态修改,而不是在第一次发生时停止。我主要考虑使用YARV执行此操作,但如果这样更容易,我可以使用其他实现。是的,这是一个whyday项目!不要在生产环境中尝试这个! 最佳答案 我只能代表MRI/YARV,但我会试一试。如果C函数已明确定义为Ruby对象上的方法,则只能在Ruby中覆盖源自C的函数。例如,Kernel#ex

ruby-on-rails - 合并两个 ruby 对象

问题:在Ruby(和/或Rails)中是否有一种简洁的方法可以将两个对象合并在一起?具体来说,我试图找出类似于jQuery的$.extend()方法的方法,而您传入​​的第一个对象的属性将被第二个对象覆盖。我正在使用Rails3.2+中的无表模型。当发生表单提交时,来自提交的参数用于动态填充用户对象。该用户对象使用Ruby的PStore类在页面请求之间持久保存,将对象编码为将来可以轻松检索的平面文件。相关代码:moduleItcclassUserincludeActiveModel::ValidationsincludeActiveModel::ConversionincludeAct

ruby-on-rails - 访问父对象属性的 "rails way"是什么?

假设我有一个模型Doctor和一个模型Patient。Patientbelongs_toaDoctor。一个Doctor有一个属性office。我想,给定一个Patientp,能够说p.office并访问p的office的医生。我总是可以写一个方法classPatientbelongs_to:doctordefofficeself.doctor.officeend但是有没有一种更自动的方法可以将Doctor的所有属性方法公开给Patient?也许使用method_missing来获得某种包罗万象的方法? 最佳答案 你可以使用dele

ruby-on-rails - `*` 用作参数时的含义(不像*arg,只是*)

这个问题在这里已经有了答案:nakedasteriskasparameterinmethoddefinition:deff(*)(1个回答)关闭9年前。当我在阅读Rails代码时,我发现了这个defsave(*)create_or_update||raise(RecordNotSaved)end*有什么作用?:O我知道当我们像*args一样使用它时会发生什么,但在这种情况下,它只是普通的*。引用https://github.com/rails/rails/blob/master/activerecord/lib/active_record/persistence.rb#L119

ruby-on-rails - 比较对象或仅比较 ID

像这样比较对象是否有性能提升......current_user.id==@user.id与这个...current_user==@user无论性能如何,是否也有最佳实践理由来做一个而不是另一个? 最佳答案 是的,但勉强。ActiveRecord::Base#==这样做:def==(comparison_object)super||comparison_object.instance_of?(self.class)&&id.present?&&comparison_object.id==idend本质上比较id但确保对象属于同一类型

ruby - 添加两个 ActiveRecord::Relation 对象

这个问题在这里已经有了答案:CombinetwoActiveRecord::Relationobjects(10个答案)关闭8年前。如何将两个关系加在一起?当我尝试+运算符时,它返回一个数组。但我需要它来返回关系。谢谢,麦克

ruby - 拆分开始和结束时的空字符串

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:SplitprobleminRuby在Ruby中,当我使用与字符串开头匹配的定界符拆分字符串时,它会在数组的初始位置给出一个空字符串:"abc".split(/a/)#=>["","bc"]但是当我用匹配字符串末尾的分隔符做类似的事情时,它不会给出空字符串:"abc".split(/c/)#=>["ab"]这在我看来不一致。这样的规范有什么理由吗?编辑如果它要与Perl的规范兼容,就像muu中的short答案一样,那么问题仍然是一样的:为什么它在Perl中是这样的?由于这个原因,现在它也变成了一个关于Perl

ruby - 期望创建一个新对象

我需要编写一个期望,即在支付系统中创建一个新对象。order.rb和order_spec.rb中包含的代码(Order类是here):#order.rbdefconfirm_order(method_of_payment)ifcredit_card_but_products_out_stock?(method_of_payment)raise"Cannotmakecreditcardpaymentnow,assomeproductsareoutofstock"endorder_totalPayment.new(method_of_payment,self.total)end#order

ruby-on-rails - 如何在 json 渲染中获取完整的 belongs_to 对象?

基本上,我有一个属于:companies的对象,并且具有:company_id属性。当我呈现json:@coupons时,JSON是否可能包含其所有者的属性而不是company_id? 最佳答案 你也许可以做一些类似render:json=>@coupons.to_json(:include=>:company)的事情,至少它似乎在我最初的rails2.3测试中有效.8.答案已编辑为使用:include=>:company而不是:include=>:companies 关于ruby-on

ruby-on-rails - 向 Rails 模型实例对象动态添加哈希属性?

有模型classPlaylistModel然后在ControllerAction中有这样的代码PlaylistController但是PlaylistModel中(或播放列表表的架构中)没有定义visited属性!看起来一个新属性正在动态添加到对象中。这是正在发生的事情吗?所有这些功能在哪里定义/我在哪里可以阅读更多相关信息。感谢您的帮助! 最佳答案 这是解释的属性setter快捷方式here.它几乎等同于:@item.attributes[:visited]=true 关于ruby-o